package com.colin.util.bugs;

import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 1、List操作addAll的问题
 * 当a.addAll(b)操作中，a,b属于同一个对象时，
 * a的集合长度会幂次增长，循环中使用，容易造成内存泄露
 *
 * 2、Arrays.asList 返回不可编辑List
 *    使用elasticsearchTemplate返回的List为不可编辑的list
 */
public class ListBugs {

    public static void main(String[] args) {
//        addAllBug();
        asListBug();
    }

    public static void asListBug() {
        List<String> aList = Arrays.asList("1", "2");
        List<String> bList = Arrays.asList("1", "2");
        System.out.println(aList.addAll(bList));
    }

    public static void addAllBug() {
        // 制造数据
        Map<String, List<String>> map = new HashMap<>();
        List<String> list1 = new ArrayList<>(10);
        list1.add("1");
        map.put("1", list1);

        //a,b List都获取同一个对象
        List<String> aList = map.get("1");
        List<String> bList = map.get("1");

        for (int i = 0; i < 10; i++) {
            aList.addAll(bList);
            // 查看aList当前大小
            System.out.println(aList.size());
        }

    }

}
